package com.pe.pgn.clubpgn.domain;

import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

import org.hibernate.annotations.Type;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * @author Edwin Farfan
 */
@Entity
@Table(name = "clpm_promocion_puntos")
public class ClpmPromocionPuntos extends CamposAuditoria{

	
	private static final long serialVersionUID = 7219790523244614340L;
	private Long id;
	private ClpmPeriodoPromocion clpmPeriodoPromocion;
    private String dePromocionPuntos;
    private Calendar daFechaInicio;
    private Calendar daFechaFin;
    private String daHoraInicio;
    private String daHoraFin;
    private Integer vaFactor;
    private Integer vaSumando;
    private Integer vaCantidadConsumida;
    private Boolean stIndicadorCantidad;
    private boolean stRango;
    private boolean stPromocionPuntos;
    

    private String periodoPromocion;
    private String fechaInicio;
    private String fechaFin;
    private String fechaInicioPeriodo;
    private String fechaFinPeriodo;
    private String indicadorCantidad;
    private Boolean todoDia;
    
    //Valores para el periodo de la promocion, se guardaran en la tabla ClpmDiasPromocion
    private Boolean vaLunes;
	private Boolean vaMartes;
	private Boolean vaMiercoles;
	private Boolean vaJueves;
	private Boolean vaViernes;
	private Boolean vaSabado;
	private Boolean vaDomingo;
	private Boolean vaPeriodoPromocionMes;
	private Integer vaRepetirPeriodo;
	private Calendar daFechaInicioPeriodo;
    private Calendar daFechaFinPeriodo;
    
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@Column(name = "co_usuario_creador", updatable = false, nullable = false, length = 30)
	public String getCoUsuarioCreador() {
		return coUsuarioCreador;
	}

    @Column(name = "da_fecha_creacion", updatable = false, nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaCreacion() {
		return daFechaCreacion;
	}

	@Column(name = "co_usuario_modificador", length = 30)
	public String getCoUsuarioModificador() {
		return coUsuarioModificador;
	}

    @Column(name = "da_fecha_modificacion")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaModificacion() {
		return daFechaModificacion;
	}

	@Override
	public boolean equals(Object o) {
		return false;
	}

	@Override
	public int hashCode() {
		return 0;
	}

	@Override
	public String toString() {
		return this.dePromocionPuntos;
	}

	@ManyToOne(targetEntity = ClpmPeriodoPromocion.class)
    @JoinColumn(name="co_periodo_promocion",nullable=true)
	public ClpmPeriodoPromocion getClpmPeriodoPromocion() {
		return clpmPeriodoPromocion;
	}

    @Column(name="de_promocion_puntos")
	public String getDePromocionPuntos() {
		return dePromocionPuntos;
	}

    @Column(name = "da_fecha_inicio")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaInicio() {
		return daFechaInicio;
	}

    @Column(name = "da_fecha_fin")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaFin() {
		return daFechaFin;
	}

    @Column(name = "da_hora_inicio")
	public String getDaHoraInicio() {
		return daHoraInicio;
	}

    @Column(name = "da_hora_fin")
	public String getDaHoraFin() {
		return daHoraFin;
	}

    @Column(name = "va_factor")
	public Integer getVaFactor() {
		return vaFactor;
	}

    @Column(name = "va_sumando")
	public Integer getVaSumando() {
		return vaSumando;
	}

    @Column(name = "va_cantidad_consumida")
	public Integer getVaCantidadConsumida() {
		return vaCantidadConsumida;
	}

    @Column(name = "st_indicador_cantidad")
    @Type(type = "yes_no")
	public Boolean getStIndicadorCantidad() {
		return stIndicadorCantidad;
	}

    @Column(name = "st_rango")
    @Type(type = "yes_no")
	public boolean isStRango() {
		return stRango;
	}

    @Column(name = "st_promocion_puntos")
    @Type(type = "yes_no")
	public boolean isStPromocionPuntos() {
		return stPromocionPuntos;
	}
    
    @Column(name = "va_lunes")
	public Boolean getVaLunes() {
		return vaLunes;
	}

    @Column(name = "va_martes")
	public Boolean getVaMartes() {
		return vaMartes;
	}

    @Column(name = "va_miercoles")
	public Boolean getVaMiercoles() {
		return vaMiercoles;
	}

    @Column(name = "va_jueves")
	public Boolean getVaJueves() {
		return vaJueves;
	}

    @Column(name = "va_viernes")
	public Boolean getVaViernes() {
		return vaViernes;
	}

    @Column(name = "va_sabado")
	public Boolean getVaSabado() {
		return vaSabado;
	}

    @Column(name = "va_domingo")
	public Boolean getVaDomingo() {
		return vaDomingo;
	}

    @Column(name = "va_periodo_promocion_mes")
	public Boolean getVaPeriodoPromocionMes() {
		return vaPeriodoPromocionMes;
	}

    @Column(name = "va_repetir_periodo")
	public Integer getVaRepetirPeriodo() {
		return vaRepetirPeriodo;
	}

    @Column(name = "da_fecha_inicio_periodo")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaInicioPeriodo() {
		return daFechaInicioPeriodo;
	}

	@Column(name = "da_fecha_fin_periodo")
    @Temporal(TemporalType.TIMESTAMP)
    @DateTimeFormat(style = "S-")
	public Calendar getDaFechaFinPeriodo() {
		return daFechaFinPeriodo;
	}

	public void setClpmPeriodoPromocion(ClpmPeriodoPromocion clpmPeriodoPromocion) {
		this.clpmPeriodoPromocion = clpmPeriodoPromocion;
	}

	public void setDePromocionPuntos(String dePromocionPuntos) {
		this.dePromocionPuntos = dePromocionPuntos;
	}

	public void setDaFechaInicio(Calendar daFechaInicio) {
		this.daFechaInicio = daFechaInicio;
	}

	public void setDaFechaFin(Calendar daFechaFin) {
		this.daFechaFin = daFechaFin;
	}

	public void setDaHoraInicio(String daHoraInicio) {
		this.daHoraInicio = daHoraInicio;
	}

	public void setDaHoraFin(String daHoraFin) {
		this.daHoraFin = daHoraFin;
	}

	public void setVaFactor(Integer vaFactor) {
		this.vaFactor = vaFactor;
	}

	public void setVaSumando(Integer vaSumando) {
		this.vaSumando = vaSumando;
	}

	public void setVaCantidadConsumida(Integer vaCantidadConsumida) {
		this.vaCantidadConsumida = vaCantidadConsumida;
	}

	public void setStIndicadorCantidad(Boolean stIndicadorCantidad) {
		this.stIndicadorCantidad = stIndicadorCantidad;
	}

	public void setStRango(boolean stRango) {
		this.stRango = stRango;
	}

	public void setStPromocionPuntos(boolean stPromocionPuntos) {
		this.stPromocionPuntos = stPromocionPuntos;
	}

	public void setVaLunes(Boolean vaLunes) {
		this.vaLunes = vaLunes;
	}

	public void setVaMartes(Boolean vaMartes) {
		this.vaMartes = vaMartes;
	}

	public void setVaMiercoles(Boolean vaMiercoles) {
		this.vaMiercoles = vaMiercoles;
	}

	public void setVaJueves(Boolean vaJueves) {
		this.vaJueves = vaJueves;
	}

	public void setVaViernes(Boolean vaViernes) {
		this.vaViernes = vaViernes;
	}

	public void setVaSabado(Boolean vaSabado) {
		this.vaSabado = vaSabado;
	}

	public void setVaDomingo(Boolean vaDomingo) {
		this.vaDomingo = vaDomingo;
	}

	public void setVaPeriodoPromocionMes(Boolean vaPeriodoPromocionMes) {
		this.vaPeriodoPromocionMes = vaPeriodoPromocionMes;
	}

	public void setVaRepetirPeriodo(Integer vaRepetirPeriodo) {
		this.vaRepetirPeriodo = vaRepetirPeriodo;
	}

	public void setDaFechaInicioPeriodo(Calendar daFechaInicioPeriodo) {
		this.daFechaInicioPeriodo = daFechaInicioPeriodo;
	}

	public void setDaFechaFinPeriodo(Calendar daFechaFinPeriodo) {
		this.daFechaFinPeriodo = daFechaFinPeriodo;
	}

	@Transient
	public String getPeriodoPromocion() {
		return periodoPromocion;
	}

	public void setPeriodoPromocion(String periodoPromocion) {
		this.periodoPromocion = periodoPromocion;
	}

	@Transient
	public String getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(String fechaInicio) {
		this.fechaInicio = fechaInicio;
	}
	
	@Transient
	public String getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

	@Transient
	public String getIndicadorCantidad() {
		return indicadorCantidad;
	}

	public void setIndicadorCantidad(String indicadorCantidad) {
		this.indicadorCantidad = indicadorCantidad;
	}

	@Transient
	public String getFechaInicioPeriodo() {
		return fechaInicioPeriodo;
	}

	public void setFechaInicioPeriodo(String fechaInicioPeriodo) {
		this.fechaInicioPeriodo = fechaInicioPeriodo;
	}

	@Transient
	public String getFechaFinPeriodo() {
		return fechaFinPeriodo;
	}

	public void setFechaFinPeriodo(String fechaFinPeriodo) {
		this.fechaFinPeriodo = fechaFinPeriodo;
	}

	@Transient
	public Boolean getTodoDia() {
		return todoDia;
	}

	public void setTodoDia(Boolean todoDia) {
		this.todoDia = todoDia;
	}

}
